| Option | Type |Default| Description |
| :------------ | :---- | :---- | :---------- |
-| legacy | bool | 0 | Enable DHCPv4 if start but no dhcpv4 option set |
| maindhcp | bool | 0 | Use odhcpd as the main DHCPv4 service |
| leasefile | string| | DHCP/v6 lease/hostfile |
| leasetrigger | string| | Lease trigger script |
AVL_TREE(interfaces, avl_strcmp, false, NULL);
struct config config = {
- .legacy = false,
.enable_tz = true,
.main_dhcpv4 = false,
.dhcp_cb = NULL,
};
enum {
- ODHCPD_ATTR_LEGACY,
ODHCPD_ATTR_MAINDHCP,
ODHCPD_ATTR_LEASEFILE,
ODHCPD_ATTR_LEASETRIGGER,
};
static const struct blobmsg_policy odhcpd_attrs[ODHCPD_ATTR_MAX] = {
- [ODHCPD_ATTR_LEGACY] = { .name = "legacy", .type = BLOBMSG_TYPE_BOOL },
[ODHCPD_ATTR_MAINDHCP] = { .name = "maindhcp", .type = BLOBMSG_TYPE_BOOL },
[ODHCPD_ATTR_LEASEFILE] = { .name = "leasefile", .type = BLOBMSG_TYPE_STRING },
[ODHCPD_ATTR_LEASETRIGGER] = { .name = "leasetrigger", .type = BLOBMSG_TYPE_STRING },
uci_to_blob(&b, s, &odhcpd_attr_list);
blobmsg_parse(odhcpd_attrs, ODHCPD_ATTR_MAX, tb, blob_data(b.head), blob_len(b.head));
- if ((c = tb[ODHCPD_ATTR_LEGACY]))
- config.legacy = blobmsg_get_bool(c);
-
if ((c = tb[ODHCPD_ATTR_MAINDHCP]))
config.main_dhcpv4 = blobmsg_get_bool(c);
iface->dhcpv4_start.s_addr = htonl(blobmsg_get_u32(c));
iface->dhcpv4_end.s_addr = htonl(ntohl(iface->dhcpv4_start.s_addr) +
LIMIT_DEFAULT - 1);
-
- if (config.main_dhcpv4 && config.legacy)
- iface->dhcpv4 = MODE_SERVER;
}
if ((c = tb[IFACE_ATTR_LIMIT]))
if ((c = tb[IFACE_ATTR_DHCPV4])) {
if ((mode = parse_mode(blobmsg_get_string(c))) >= 0) {
- if (config.main_dhcpv4) {
- iface->dhcpv4 = mode;
+ iface->dhcpv4 = config.main_dhcpv4 ? mode : MODE_DISABLED;
- if (iface->dhcpv4 != MODE_DISABLED)
- iface->ignore = false;
- }
+ if (iface->dhcpv4 != MODE_DISABLED)
+ iface->ignore = false;
} else
error("Invalid %s mode configured for interface %s",
iface_attrs[IFACE_ATTR_DHCPV4].name, iface->name);